\documentclass{beamer}
\usepackage{multirow}
\usepackage{ctex}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{color}
\usepackage{xcolor}

\usepackage{listings}
\definecolor{keywordcolor}{rgb}{0,0,1}
\lstset{breaklines}%这条命令可以让LaTeX自动将长的代码行换行排版
\lstset{extendedchars=false}%这一条命令可以解决代码跨页时，章节标题，页眉等汉字不显示的问题
\lstset{language=C++, %用于设置语言为C++
	keywordstyle=\color{keywordcolor} \bfseries, %设置关键词
	identifierstyle=,
	basicstyle=\ttfamily, 
	commentstyle=\color{blue} \textit ,
	stringstyle=\ttfamily, 
	showstringspaces=false,
	%frame=shadowbox, %边框
	captionpos=b
}
\usetheme{Madrid}

\author{uncle-lu}
\title{生命不息,搞事不止}
\subtitle[sbt]{C++语法扫尾工作倒计时-2}
\institute{乌鲁木齐市第一中学}
\date{\today}


\begin{document}

\frame{\titlepage}

\begin{frame}

	\begin{multicols}{1}
		\tableofcontents
	\end{multicols}

\end{frame}

\begin{frame}
	\frametitle{语法课}
	这可能是近几天的最后第二节语法课.

	之前我们都涉及到算法的内容.之前可能会有点难.但是今天会好很多.这都是些干货.
\end{frame}

\section{回顾}

\begin{frame}
	\frametitle{回顾}
	\Huge
	数据类型?大小?空间?
\end{frame}

\section{变量}

\subsection{变量的有效范围}

\begin{frame}
	\frametitle{变量的有效范围}

	所有变量分两种不同范围.

	\pause

	\begin{itemize}
		\item 局部变量
		\item 全局变量
	\end{itemize}

\end{frame}

\begin{frame}
	\frametitle{范围?}

	\pause

	从名称上我们也可以发现.

	\pause

	全局变量的意思就是在整体程序中有效的变量.

	\pause

	局部变量的意思就是在程序一部分中有效的变量.

\end{frame}

\subsection{全局变量}

\begin{frame}
	\frametitle{全局变量}

	在整体程序中有效的变量.

	\pause

	\begin{block}{特点}
		\begin{itemize}
			\item 全局有效.

				用此变量名全局都可以访问.

			\item 有初始值.初始值为0.
		\end{itemize}
	\end{block}

	\pause

	关于定义:

	定义在函数外.定义在程序主框架外.

\end{frame}

\begin{frame}[fragile]
	\frametitle{全局变量}
	举个例子.
	\lstinputlisting[extendedchars=false]{"code/b.cpp"}
\end{frame}

\subsection{局部变量}

\begin{frame}
	\frametitle{局部变量}

	在局部程序中有效的变量.

	\begin{block}{特点}
		\begin{itemize}
			\item 局部有效.超出范围就无法使用.并且会报错.
			\item 初始值为计算机随机值.
		\end{itemize}
	\end{block}

	关于定义:

	在函数内定义.

\end{frame}

\begin{frame}[fragile]
	\frametitle{局部变量}
	举个例子.
	\small{\lstinputlisting[extendedchars=false]{"code/a.cpp"}}
\end{frame}

\section{运算符}

\begin{frame}
	\frametitle{扩展几个运算符}
	赋值运算符+算数运算符.

	\begin{center}
		\begin{tabular}{|c|c|}
			\hline
			x=x+k & x+=k\\
			\hline
			x=x-k & x-=k\\
			\hline
			x=x*k & x*=k\\
			\hline
			x=x/k & x/=k\\
			\hline
			x=x\%k & x\%=k\\
			\hline
		\end{tabular}
	\end{center}

\end{frame}

\begin{frame}
	\frametitle{之后有几个运算符}
	
	\begin{center}
		\begin{tabular}{|c|c|c|}
			\hline
			x=x+1 & x++ & ++x\\
			\hline
			x=x-1 & x- - & - -x\\
			\hline
		\end{tabular}
	\end{center}

	它们有什么区别呢?

	\pause

	++x,- -x要比x++,x- -运算级别高.

\end{frame}

\begin{frame}
	\frametitle{实例}

	A: a=5; b=++a; // 相当于a=a+1;b=a; 结果是a=6，b=6

	B: a=5; b=a++; // 相当于b=a;a=a+1; 结果是a=6，b=5

\end{frame}

\section{数组}
\begin{frame}
	\frametitle{数组}

	\pause

	问题:

	现在有一列数.要求你对其进行排序.

	\pause

	而我们拿到这样一个问题.按照我们之前讲的要将问题分成很多个步骤来处理.

	这里的第一个步骤可以说就是.

	将这一列数存下来.

\end{frame}

\begin{frame}
	\frametitle{数组}

	我们现在有.

	1 2 3 4 5 6 7 8 9.

	这9个数.

	\pause

	按照以前的方式.

	这九个数可能会存在.

	a b c d e f g h i 

	这九个变量里.

	\pause

	但是它们是一列数.

	我们想让它们叫一个名字.

\end{frame}

\begin{frame}
	\frametitle{数组}

	比如说.我想让它们叫做.\textbf{a}

	然后第一个数.叫做第一个a,第二个数叫做第二个a \ldots\ldots

	\pause

	所以这一组数.
	
	我们可以存在一个叫做数组的结构中.

	\pause

	定义:

	数据类型 \quad 变量名[数组大小];

	eg:

	int a[10];

\end{frame}

\begin{frame}[fragile]
	\frametitle{数组的使用}

	我们现在已经定义好一个数组.

	但是如何使用?

	\pause

	\small{ \lstinputlisting[extendedchars=false]{"code/c.cpp"}}

\end{frame}

\section{自定义函数}

\begin{frame}
	\frametitle{自定义函数}

	高端操作---->函数.

	函数就像一个包一样.

	将我们的语句打包在一起.

	比如说我们的main().

	\pause

	如果我们有过多的操作.需要重复写.

	我们就可以将这些操作写成一个函数.然后每次用的时候去调用这些函数.

	\pause

	\begin{block}{函数}
		\begin{itemize}
			\item 函数的定义.
			\item 函数的参数传递.
			\item 函数的返回值.
		\end{itemize}
	\end{block}

\end{frame}

\subsection{函数的定义}

\begin{frame}
	\frametitle{函数的定义}

	数据类型 \quad 函数名(参数)

	\{

		\ldots

	\}

\end{frame}

\subsection{函数的参数传递.}

\begin{frame}
	\frametitle{函数的参数传递}

	我们函数名的后面的括号.有两个作用.
	\begin{itemize}
		\item 表示它是一个函数.
		\item 向它传递参数.
	\end{itemize}

	参数?

	因为有些时候函数与函数之间有一些联系.

	我使用某个函数的时候需要使用一些数据.

	而我的参数就写在括号内.

\end{frame}

\begin{frame}
	\frametitle{函数的返回值}

	每一个函数都需要用return来结束这个函数.

	当结束此函数的时候.返回值会呈现在调用这个函数的地方.

	函数的返回值也可以来传送一些有用的参数.

\end{frame}

\begin{frame}[fragile]

	举个例子:

	\small{ \lstinputlisting[extendedchars=false]{"code/d.cpp"}}

\end{frame}

\section{代码风格}

\begin{frame}
	\frametitle{代码风格}

	https://oi.men.ci/code-style-oi/

	待会带着大家一起阅读.

\end{frame}

\begin{frame}

	\Huge 

	Thanks!

	主讲人:uncle-lu

\end{frame}

\end{document}
